package com.wanhe.base.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式的 工具
 * 
 * @author niewnchi
 * 
 */
public class RegularUtil {

	/**
	 * 手机号码 格式匹配
	 * @param mun
	 * @return
	 */
	public boolean checkMoblie(String mun) {

		Pattern pattern = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
		Matcher matcher = pattern.matcher(mun);
		return matcher.matches();
	}

/**
 * 密码格式匹配
 * @param pwd
 */
	public boolean CheckPwd(String pwd) {
		String regex = "([A-Z]+[a-z]+[0-9]+[\\d\\w]*)|([A-Z]+[0-9]+[a-z]+[\\d\\w]*)|([0-9]+[a-z]+[A-Z]+[\\d\\w]*)"
				+ "|([0-9]+[A-Z]+[a-z]+[\\d\\w]*)|([a-z]+[0-9]+[A-Z]+[\\d\\w]*)|([a-z]+[A-Z]+[0-9]+[\\d\\w]*)";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(pwd);
		
		if (matcher.find()) {
			if (pwd.equals(matcher.group())) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
	
	
	/**
	 * 验证ip是否合法
	 * 
	 * @param text
	 *            ip地址
	 * @return 验证信息
	 */
	public boolean ipCheck(String text) {
		if (text != null && !text.isEmpty()) {
			// 定义正则表达式
			String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
					+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
					+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
					+ "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
			// 判断ip地址是否与正则表达式匹配
			if (text.matches(regex)) {
				return true;
			} else {
				return false;
			}
		}
		// 返回判断信息
		return false;
	}
	
	/**
	 * 验证port是否合法
	 * @return 验证信息
	 */
	public boolean portCheck(String text) {
		if (text != null && !text.isEmpty()) {
			// 定义正则表达式
			String regex = "^[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5]$ "
					+ "^[a-zA-z]+:\\/\\/(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5]))?(\\/\\w*)*(\\.\\w*)?(\\?\\S*)?$/";
	
			// 判断port是否与正则表达式匹配
			if (text.matches(regex)) {
				return true;
			} else {
				return false;
			}
		}
		// 返回判断信息
		return false;
	}
	
	
	
	/**
	 * 验证ip 和 port 的正则是否合法
	 * @return 验证信息
	 */
	public boolean IpPortCheck(String text) {
			// 定义正则表达式
			String regex = "\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\:\\d{1,5}\\b";

			Pattern pattern = Pattern.compile(regex);
			Matcher matcher = pattern.matcher(text);
			if (matcher.matches()) {
				System.out.println(text + " 是正确的ip+端口号地址。");
				return true;
			} else {
				System.out.println(text + " 不是正确的ip+端口号地址。");
				return false;
			}
	}
	
	
	/**
	 * 验证数字是否为正整数
	 * @return 验证信息
	 */
	public boolean isPositiveInt(String num) {
//		String regex = "^[0-9]*[1-9][0-9]*$"; //这个不够好，0001算正整数
		String regex = "^\\+?[1-9][0-9]*$";
		return num.matches(regex);
	}
	
	/**
	 * 验证数字是否为非负数
	 * @return 验证信息
	 */
	public boolean isNonNegative(String num) {
		String regex = "^\\d+$";
		if (num.matches(regex)) {
			System.out.println("222yes");
		}else {
			System.out.println("222no");
		}
		return num.matches(regex);
	}

}
